home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / MFC_Samples / cmnctrls / treecpg.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  5.3 KB  |  159 lines

  1. // TreeCtrlPage.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "ctrldemo.h"
  6. #include "treecpg.h"
  7. #include "mtreectl.h"
  8. #include "treedlg.h"
  9.  
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15.  
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CTreeCtrlPage property page
  18.  
  19. IMPLEMENT_DYNCREATE(CTreeCtrlPage, CPropertyPage)
  20.  
  21. CTreeCtrlPage::CTreeCtrlPage() : CPropertyPage(CTreeCtrlPage::IDD)
  22. {
  23.     //{{AFX_DATA_INIT(CTreeCtrlPage)
  24.     m_bDisableDragDrop = FALSE;
  25.     m_bHasButtons = FALSE;
  26.     m_bHasLines = FALSE;
  27.     m_bLinesAtRoot = FALSE;
  28.     m_bEditLabels = FALSE;
  29.     m_bShowSelAlways = FALSE;
  30.     m_cstrStatus = _T("");
  31.     //}}AFX_DATA_INIT
  32. }
  33.  
  34. CTreeCtrlPage::~CTreeCtrlPage()
  35. {
  36. }
  37.  
  38. void CTreeCtrlPage::DoDataExchange(CDataExchange* pDX)
  39. {
  40.     CPropertyPage::DoDataExchange(pDX);
  41.     //{{AFX_DATA_MAP(CTreeCtrlPage)
  42.     DDX_Control(pDX, IDC_TREESTATUS, m_notifshowcase);
  43.     DDX_Control(pDX, IDC_TREEVIEW1, m_mytreectrl);
  44.     DDX_Text(pDX, IDC_TREESTATUS, m_cstrStatus);
  45.     //}}AFX_DATA_MAP
  46. }
  47.  
  48.  
  49. BEGIN_MESSAGE_MAP(CTreeCtrlPage, CPropertyPage)
  50.     //{{AFX_MSG_MAP(CTreeCtrlPage)
  51.     ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_TREEVIEW1, ShowNotification)
  52.     ON_NOTIFY(TVN_SELCHANGING, IDC_TREEVIEW1, ShowNotification)
  53.     ON_NOTIFY(TVN_SELCHANGED, IDC_TREEVIEW1, ShowNotification)
  54.     ON_NOTIFY(TVN_GETDISPINFO, IDC_TREEVIEW1, ShowNotification)
  55.     ON_NOTIFY(TVN_SETDISPINFO, IDC_TREEVIEW1, ShowNotification)
  56.     ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREEVIEW1, ShowNotification)
  57.     ON_NOTIFY(TVN_ITEMEXPANDED, IDC_TREEVIEW1, ShowNotification)
  58.     ON_NOTIFY(TVN_BEGINDRAG, IDC_TREEVIEW1, ShowNotification)
  59.     ON_NOTIFY(TVN_KEYDOWN, IDC_TREEVIEW1, ShowNotification)
  60.     ON_NOTIFY(TVN_SELCHANGED, IDC_TREEVIEW1, ShowNotification)
  61.     ON_NOTIFY(TVN_SELCHANGING, IDC_TREEVIEW1, ShowNotification)
  62.     ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREEVIEW1, ShowNotification)
  63.     ON_NOTIFY(TVN_ITEMEXPANDED, IDC_TREEVIEW1, ShowNotification)
  64.     ON_NOTIFY(TVN_DELETEITEM, IDC_TREEVIEW1, ShowNotification)
  65.     ON_BN_CLICKED(IDC_MORE, OnMore)
  66.     //}}AFX_MSG_MAP
  67. END_MESSAGE_MAP()
  68.  
  69. /////////////////////////////////////////////////////////////////////////////
  70. // CTreeCtrlPage message handlers
  71. BOOL CTreeCtrlPage::OnInitDialog()
  72. {
  73.     CImageList            *pimagelist;
  74.     CBitmap                bitmap;
  75.     CCtrldemoApp        *pApp;
  76.     int                    iItem;
  77.     UINT                nID;
  78.     TV_INSERTSTRUCT        tvstruct;
  79.     TCHAR                rgszItems[12][18];
  80.     
  81.     _tcscpy(rgszItems[0], (LPCTSTR)CString((LPCTSTR)IDS_DOGS));
  82.     _tcscpy(rgszItems[1], (LPCTSTR)CString((LPCTSTR)IDS_SHEPHERD));
  83.     _tcscpy(rgszItems[2], (LPCTSTR)CString((LPCTSTR)IDS_DALMATIAN));
  84.     _tcscpy(rgszItems[3], (LPCTSTR)CString((LPCTSTR)IDS_DANE));
  85.  
  86.     _tcscpy(rgszItems[4], (LPCTSTR)CString((LPCTSTR)IDS_BIRDS));
  87.     _tcscpy(rgszItems[5], (LPCTSTR)CString((LPCTSTR)IDS_HUMMINGBIRD));
  88.     _tcscpy(rgszItems[6], (LPCTSTR)CString((LPCTSTR)IDS_PIGEON));
  89.     _tcscpy(rgszItems[7], (LPCTSTR)CString((LPCTSTR)IDS_EAGLE));
  90.  
  91.     _tcscpy(rgszItems[8], (LPCTSTR)CString((LPCTSTR)IDS_FISH));
  92.     _tcscpy(rgszItems[9], (LPCTSTR)CString((LPCTSTR)IDS_SNAPPER));
  93.     _tcscpy(rgszItems[10], (LPCTSTR)CString((LPCTSTR)IDS_SOLE));
  94.     _tcscpy(rgszItems[11], (LPCTSTR)CString((LPCTSTR)IDS_SALMON));
  95.  
  96.     pApp = (CCtrldemoApp *)AfxGetApp();
  97.     CPropertyPage::OnInitDialog();  // let the base class do the default work
  98.     pimagelist = new CImageList();
  99.     pimagelist->Create(32, 16, TRUE/*bMask*/, 6, 4);
  100.  
  101.     for (nID = IDB_BMTREEFIRST; nID <= IDB_BMTREELAST; nID++)  // load bitmaps for dog, bird and fish
  102.     {
  103.         bitmap.LoadBitmap(nID);
  104.         pimagelist->Add(&bitmap, (COLORREF)0xFFFFFF);
  105.         bitmap.DeleteObject();
  106.     }
  107.  
  108.     m_mytreectrl.SetImageList(pimagelist, TVSIL_NORMAL);
  109.     for (iItem = 0; iItem < CELEMS(rgszItems); iItem ++)
  110.     {
  111.         tvstruct.hParent = (iItem % 4 == 0)? NULL : m_rghItem[iItem / 4 * 4];
  112.         tvstruct.hInsertAfter = TVI_SORT;
  113.         tvstruct.item.iImage = iItem / 4 * 2;
  114.         tvstruct.item.iSelectedImage = tvstruct.item.iImage + 1;
  115.         tvstruct.item.pszText = rgszItems[iItem];
  116.         tvstruct.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
  117.         m_rghItem[iItem] = m_mytreectrl.InsertItem(&tvstruct);
  118.     }
  119.  
  120.     return FALSE;
  121. }
  122.  
  123. void CTreeCtrlPage::ShowNotification(LPNMHDR pnmhdr, LRESULT *pResult)
  124. {
  125.     ((CNotifyShowCase *)GetDlgItem(IDC_TREESTATUS))->ShowNotification(pnmhdr->code);
  126. }
  127.  
  128. void CTreeCtrlPage::OnMore() 
  129. {
  130.     CTreeCtrlDlg treeCtrlDlg;
  131.     treeCtrlDlg.m_bEditLabels = m_bEditLabels;
  132.     treeCtrlDlg.m_bHasButtons = m_bHasButtons;
  133.     treeCtrlDlg.m_bHasLines = m_bHasLines;
  134.     treeCtrlDlg.m_bLinesAtRoot = m_bLinesAtRoot;
  135.     treeCtrlDlg.m_bDisableDragDrop = m_bDisableDragDrop;
  136.     treeCtrlDlg.m_bShowSelAlways = m_bShowSelAlways;
  137.  
  138.     if(treeCtrlDlg.DoModal() == IDOK)
  139.     {
  140.         m_bEditLabels = treeCtrlDlg.m_bEditLabels;
  141.         m_bHasButtons = treeCtrlDlg.m_bHasButtons;
  142.         m_bHasLines = treeCtrlDlg.m_bHasLines;
  143.         m_bLinesAtRoot = treeCtrlDlg.m_bLinesAtRoot;
  144.         m_bDisableDragDrop = treeCtrlDlg.m_bDisableDragDrop;
  145.         m_bShowSelAlways = treeCtrlDlg.m_bShowSelAlways;
  146.         SetTreeCtrlStyle();
  147.     }
  148. }
  149.  
  150. void CTreeCtrlPage::SetTreeCtrlStyle()
  151. {    
  152.     m_mytreectrl.SetNewStyle(TVS_EDITLABELS, m_bEditLabels);
  153.     m_mytreectrl.SetNewStyle(TVS_HASBUTTONS, m_bHasButtons);
  154.     m_mytreectrl.SetNewStyle(TVS_HASLINES, m_bHasLines);
  155.     m_mytreectrl.SetNewStyle(TVS_LINESATROOT, m_bLinesAtRoot);
  156.     m_mytreectrl.SetNewStyle(TVS_DISABLEDRAGDROP, m_bDisableDragDrop);
  157.     m_mytreectrl.SetNewStyle(TVS_SHOWSELALWAYS, m_bShowSelAlways);
  158. }
  159.